﻿namespace LogManager.Core.Factories
{
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Xml.Linq;
    using LogManager.Core.Models;
    using LogManager.Core.Models.Smtp;
    using LogManager.Core.Providers;

    public interface IXmlElementFactory
    {
        IXmlTemplateProvider TemplateProvider { get; }

        Configuration CreateConfiguration(XDocument baseDocument);
        Configuration CreateConfiguration(string xmlPath, string xsdPath);
        Configuration CreateNewConfiguration();

        Location CreateLocation(XElement baseNode, IServer parent);
        Location CreateNewLocation(IServer parent);
 
        Server CreateServer(XElement baseNode, IPlateform parent);
        Server CreateNewServer(IPlateform parent);
   
        Plateform CreatePlateform(XElement baseNode, IWarehouse parent);
        Plateform CreateNewPlateform(IWarehouse parent);
    
        Warehouse CreateWarehouse(XElement baseNode, IConfiguration parent);
        Warehouse CreateNewWarehouse(IConfiguration parent);

        Settings CreateSettings(XElement baseNode);
        SmtpSettings CreateSmtpSettings(XElement baseNode);
        SmtpServer CreateSmtpServer(XElement baseNode);
        From CreateSmtpFrom(XElement baseNode);    
        To CreateSmtpTo(XElement baseNode); 
    }
}
